(VAR X Y Z) (STRATEGY CONTEXTSENSITIVE (primes) (sieve 1) (from 1) (s 1) (0) (cons 1) (head 1) (tail 1) (if 1) (true) (false) (filter 1 2) (divides 1 2) ) (RULES primes -> sieve(from(s(s(0)))) from(X) -> cons(X,from(s(X))) head(cons(X,Y)) -> X tail(cons(X,Y)) -> Y if(true,X,Y) -> X if(false,X,Y) -> Y filter(s(s(X)),cons(Y,Z)) -> if(divides(s(s(X)),Y),filter(s(s(X)),Z),cons(Y,filter(X,sieve(Y)))) sieve(cons(X,Y)) -> cons(X,filter(X,sieve(Y))) )